package org.rslai.tcedit.dao;

import java.util.List;
import org.rslai.tcedit.domain.*;

/**
 * 定义 User 所有操作接口
 * 
 * @author rslai
 */
public interface UserDao extends GenericDao<User> {

	/**
	 * 根据输入的用户名查询 User 对象
	 * 
	 * @param username 用户名
	 * @return 返回 User 对象
	 */
	public User queryUser(String username);

	/***
	 * 查询用户列表
	 * @param asc true 为升序，false 为降序
	 * @return
	 */
	public List<User> query(boolean asc);

	/***
	 * 根据输入的用户名、真实姓名、email查询用户列表
	 * @param page page
	 * @param username 用户名，前后加 % 号为模糊查询，例如：%user%。不加 % 为精确查询。 只有 % 为查询所有
	 * @param realName 真实姓名，前后加 % 号为模糊查询，例如：%user%。不加 % 为精确查询。 只有 % 为查询所有
	 * @param email email，前后加 % 号为模糊查询，例如：%user%。不加 % 为精确查询。 只有 % 为查询所有
	 * @param asc true 为升序，false 为降序
	 * @return 用户信息列表
	 */
	public List<User> query(Page page, String username, String realName, String email, boolean asc);

	/**
	 * 修改用户密码
	 * @param username 用户名
	 * @param oldPassword 旧口令
	 * @param newPassword 新口令
	 */
	void changePassword(String username, String oldPassword, String newPassword);

}
